package com.t.bricks.bussiness.controller.currentprice;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiResponse;
import io.swagger.annotations.ApiResponses;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

import com.t.bricks.bussiness.db.entity.currentprice.CurrentPrice;
import com.t.bricks.bussiness.model.currentprice.ConditionCurrentPrice;
import com.t.bricks.bussiness.service.currentprice.CurrentPriceService;
import com.t.bricks.model.MsgEmity;
import com.t.bricks.utils.modules.web.FindByPageParam;

@RestController
@Api(value="当前售价", tags={"仓储管理-当前售价操作接口"})
@RequestMapping("/current/price/")
public class CurrentPriceController {

	/**
	 * 当前售价业务实现类
	 */
	@Autowired
	private CurrentPriceService currentPriceService;

	/**
	 * 修改数据
	 * @param currentPrice 当前售价实体对象
	 * @return MsgEmity
	 */
	//[start]
	@ApiOperation(value="修改数据", response=CurrentPrice.class)
	@ApiResponses({
		@ApiResponse(code=200, message="{\"success\": 布尔值, \"msg\": 文字提示, \"data\": 码值|Json数据对象}"),
		@ApiResponse(code=400, message="错误的请求,请检查路径"),
		@ApiResponse(code=404, message="请求路径没有或页面跳转路径不对"),
		@ApiResponse(code=1000001, message="内部请求密钥错误"),
		@ApiResponse(code=1000002, message="您还没有登录或登录已超时,需要重新登录"),
		@ApiResponse(code=1000003, message="检查登录状态失败,请稍后重试！"),
		@ApiResponse(code=1000004, message="请求的操作不存在,请检查访问地址正确性，如大小写"),
		@ApiResponse(code=1000005, message="响应后在系统内部发生不可预知的错误"),
		@ApiResponse(code=1019000, message="1019000~1999999为拦截器调用方法错误"),
		@ApiResponse(code=8001, message="物品编号不能为空"),
		@ApiResponse(code=8002, message="售价不能小于0"),
		@ApiResponse(code=8003, message="最低价格不能小于0"),
		@ApiResponse(code=8004, message="最高价格不能小于0"),
		@ApiResponse(code=8005, message="售价不能小于最低价格"),
		@ApiResponse(code=8006, message="售价不能大于最高价格"),
		@ApiResponse(code=8007, message="最低价格不能大于最高价格"),
		@ApiResponse(code=8008, message="折扣限制在1到10之间"),
		@ApiResponse(code=8009, message="最低折扣限制在1到10之间"),
		@ApiResponse(code=80010, message="最高折扣限制在1到10之间"),
		@ApiResponse(code=8011, message="折扣不能小于最低折扣"),
		@ApiResponse(code=8012, message="折扣不能大于最高折扣"),
		@ApiResponse(code=8013, message="最低折扣不能大于最高折扣"),
		@ApiResponse(code=7001, message="操作未能得到预期影响值(预期1)"),
		@ApiResponse(code=7002, message="操作时发生异常"),
		@ApiResponse(code=7003, message="7003~8998为修改时发生的其它错误")
	})
	//[end]
	@RequestMapping(method={RequestMethod.POST}, value="/edit")
	public MsgEmity edit(@RequestBody CurrentPrice currentPrice) {
		return currentPriceService.edit(currentPrice);
	}

	/**
	 * 根据记录编号取对象
	 * @param sId 编号
	 * @return MsgEmity
	 */
	//[start]
	@ApiOperation(value="根据记录编号取对象", response=CurrentPrice.class)
	@ApiResponses({
		@ApiResponse(code=200, message="{\"success\": 布尔值, \"msg\": 文字提示, \"data\": 码值|Json数据对象}"),
		@ApiResponse(code=400, message="错误的请求,请检查路径"),
		@ApiResponse(code=404, message="请求路径没有或页面跳转路径不对"),
		@ApiResponse(code=1000001, message="内部请求密钥错误"),
		@ApiResponse(code=1000002, message="您还没有登录或登录已超时,需要重新登录"),
		@ApiResponse(code=1000003, message="检查登录状态失败,请稍后重试！"),
		@ApiResponse(code=1000004, message="请求的操作不存在,请检查访问地址正确性，如大小写"),
		@ApiResponse(code=1000005, message="响应后在系统内部发生不可预知的错误"),
		@ApiResponse(code=1019000, message="1019000~1999999为拦截器调用方法错误"),
		@ApiResponse(code=8001, message="编号参数能为空"),
		@ApiResponse(code=7001, message="数据不存在"),
		@ApiResponse(code=7002, message="查询发生异常"),
		@ApiResponse(code=7003, message="7003~8998为修改时发生的其它错误")
	})
	//[end]
	@RequestMapping(method={RequestMethod.POST}, value="/find/id")
	public MsgEmity findById(String sId) {
		return currentPriceService.findById(sId);
	}

	/**
	 * 根据关键值取对象集合
	 * @param currentPrice 当前售价实体对象
	 * @return MsgEmity
	 */
	//[start]
	@ApiOperation(value="根据关键值取对象集合", response=CurrentPrice.class)
	@ApiResponses({
		@ApiResponse(code=200, message="{\"success\": 布尔值, \"msg\": 文字提示, \"data\": 码值|Json数据对象集合}"),
		@ApiResponse(code=400, message="错误的请求,请检查路径"),
		@ApiResponse(code=404, message="请求路径没有或页面跳转路径不对"),
		@ApiResponse(code=1000001, message="内部请求密钥错误"),
		@ApiResponse(code=1000002, message="您还没有登录或登录已超时,需要重新登录"),
		@ApiResponse(code=1000003, message="检查登录状态失败,请稍后重试！"),
		@ApiResponse(code=1000004, message="请求的操作不存在,请检查访问地址正确性，如大小写"),
		@ApiResponse(code=1000005, message="响应后在系统内部发生不可预知的错误"),
		@ApiResponse(code=1019000, message="1019000~1999999为拦截器调用方法错误"),
		@ApiResponse(code=8000, message="条件参数不能为空"),
		@ApiResponse(code=8001, message="内部待转换的类型为空"),
		@ApiResponse(code=8002, message="服务端缺少json转换包的引用"),
		@ApiResponse(code=8003, message="服务端缺少json转换包的引用"),
		@ApiResponse(code=8004, message="待操作的数据不符合格式要求"),
		@ApiResponse(code=7001, message="数据不存在"),
		@ApiResponse(code=7002, message="查询发生异常"),
		@ApiResponse(code=7003, message="7003~8998为修改时发生的其它错误")
	})
	//[end]
	@RequestMapping(method={RequestMethod.POST}, value="/find/key")
	public MsgEmity findByKey(@RequestBody CurrentPrice currentPrice) {
		return currentPriceService.findByKey(currentPrice);
	}

	/**
	 * 根据记录编号查询符合分页数据的某条记录
	 * @param sId 编号
	 * @return MsgEmity
	 */
	//[start]
	@ApiOperation(value="根据记录编号查询符合分页数据的某条记录", response=CurrentPrice.class)
	@ApiResponses({
		@ApiResponse(code=200, message="{\"success\": 布尔值, \"msg\": 文字提示, \"data\": 码值|Json数据对象}"),
		@ApiResponse(code=400, message="错误的请求,请检查路径"),
		@ApiResponse(code=404, message="请求路径没有或页面跳转路径不对"),
		@ApiResponse(code=1000001, message="内部请求密钥错误"),
		@ApiResponse(code=1000002, message="您还没有登录或登录已超时,需要重新登录"),
		@ApiResponse(code=1000003, message="检查登录状态失败,请稍后重试！"),
		@ApiResponse(code=1000004, message="请求的操作不存在,请检查访问地址正确性，如大小写"),
		@ApiResponse(code=1000005, message="响应后在系统内部发生不可预知的错误"),
		@ApiResponse(code=1019000, message="1019000~1999999为拦截器调用方法错误"),
		@ApiResponse(code=8001, message="编号参数能为空"),
		@ApiResponse(code=7001, message="数据不存在"),
		@ApiResponse(code=7002, message="查询发生异常"),
		@ApiResponse(code=7003, message="7003~8998为修改时发生的其它错误")
	})
	//[end]
	@RequestMapping(method={RequestMethod.POST}, value="/find/page/row")
	public MsgEmity findByPageRow(String sId) {
		return currentPriceService.findByPageRow(sId);
	}

	/**
	 * 查询分页数据
	 * @param findByPageParam 分页查询条件组合类
	 * 结构参考: {"page": 分页请求信息对象, "orders": 排序信息对象集合, "sLikeStr": 全文检索, "condition": 查询条件对象}
	 * @return MsgEmity 返回查询结果
	 */
	//[start]
	@ApiOperation(value="查询分页数据", response=CurrentPrice.class)
	@ApiResponses({
		@ApiResponse(code=200, message="{\"success\": 布尔值, \"msg\": 文字提示, \"data\": 码值|Json数据对象集合}"),
		@ApiResponse(code=400, message="错误的请求,请检查路径"),
		@ApiResponse(code=404, message="请求路径没有或页面跳转路径不对"),
		@ApiResponse(code=1000001, message="内部请求密钥错误"),
		@ApiResponse(code=1000002, message="您还没有登录或登录已超时,需要重新登录"),
		@ApiResponse(code=1000003, message="检查登录状态失败,请稍后重试！"),
		@ApiResponse(code=1000004, message="请求的操作不存在,请检查访问地址正确性，如大小写"),
		@ApiResponse(code=1000005, message="响应后在系统内部发生不可预知的错误"),
		@ApiResponse(code=1019000, message="1019000~1999999为拦截器调用方法错误"),
		@ApiResponse(code=7001, message="查询数量失败且发生异常"),
		@ApiResponse(code=7002, message="查询数据发生异常，值为null"),
		@ApiResponse(code=7003, message="查询分页数据发生异常"),
		@ApiResponse(code=7004, message="7004~8998为修改时发生的其它错误")
	})
	//[end]
	@RequestMapping(method={RequestMethod.POST}, value="/find/page")
	public MsgEmity findByPage(@RequestBody FindByPageParam<ConditionCurrentPrice> findByPageParam) {
		return currentPriceService.findByPage(findByPageParam.getPage(),
				findByPageParam.getOrders(),
				findByPageParam.getsLikeStr(),
				findByPageParam.getCondition());
	}
	
	/**
	 * 创建Excel文件
	 * @param findByPageParam 分页查询条件组合类,注意:分页信息将被抛弃
	 * 结构参考:  {"page": 分页请求信息对象(被抛弃), "orders": 排序信息对象集合, "sLikeStr": 全文检索, "condition": 查询条件对象}
	 * @return MsgEmity 返回结构中data为创建的经过压缩的Excel内容,接收端需要进行解压,msg为文件名
	 */
	//[start]
	@ApiOperation(value="创建Excel文件", notes="返回结构中data为创建的经过压缩的Excel内容,接收端需要进行解压,msg为文件名")
	@ApiResponses({
		@ApiResponse(code=200, message="{\"success\": 布尔值, \"msg\": 文字提示, \"data\": Excel内容}"),
		@ApiResponse(code=400, message="错误的请求,请检查路径"),
		@ApiResponse(code=404, message="请求路径没有或页面跳转路径不对"),
		@ApiResponse(code=1000001, message="内部请求密钥错误"),
		@ApiResponse(code=1000002, message="您还没有登录或登录已超时,需要重新登录"),
		@ApiResponse(code=1000003, message="检查登录状态失败,请稍后重试！"),
		@ApiResponse(code=1000004, message="请求的操作不存在,请检查访问地址正确性，如大小写"),
		@ApiResponse(code=1000005, message="响应后在系统内部发生不可预知的错误"),
		@ApiResponse(code=1019000, message="1019000~1999999为拦截器调用方法错误"),
		@ApiResponse(code=6001, message="没有指定模板"),
		@ApiResponse(code=6002, message="没有指定保存位置"),
		@ApiResponse(code=6003, message="保存路径错误"),
		@ApiResponse(code=6004, message="没有数据可导出"),
		@ApiResponse(code=6005, message="读取模板文件失败"),
		@ApiResponse(code=6006, message="保存文件时失败"),
		@ApiResponse(code=6100, message="待压缩字符串为空(文件内容为空)"),
		@ApiResponse(code=6101, message="压缩时发生异常"),
		@ApiResponse(code=7001, message="查询数据发生异常,执行的返回值为:null,预期值不应为null"),
		@ApiResponse(code=7002, message="查询导出文件用的数据发生异常"),
		@ApiResponse(code=7003, message="7003~8998为修改时发生的其它错误")
	})
	//[end]
	@RequestMapping(method={RequestMethod.POST}, value="/export")
	public MsgEmity export(@RequestBody FindByPageParam<ConditionCurrentPrice> findByPageParam) {
		return currentPriceService.export(
				findByPageParam.getOrders(),
				findByPageParam.getsLikeStr(),
				findByPageParam.getCondition());
	}

	//---------------------------- 自动生成代码结束 ----------------------------//
	
	/**
	 * 直接调用Mapping中方法参考
	 * 注意:1)本方法仅用于参考,不能开放,保留这段屏蔽的代码仅为了方便接口的扩展
	 *	 2)本方法的函数名必须与Mapping中的方法名一致
	 *	 3)本方法的参数必须与Mapping中的参数类型和顺序一致
	 * @param 参数
	 * @return MsgEmity 返回查询结果
	 */
	//@ApiOperation(value="接口名称", notes="接口描述", response=接口返回的MsgEmity中的Data类名.class)
	//@ApiResponses({
	//	@ApiResponse(code=200, message="{\"success\": 布尔值, \"msg\": 文字提示, \"data\": 码值|Json字符串}"),
	//	@ApiResponse(code=400, message="错误的请求,请检查路径"),
	//	@ApiResponse(code=404, message="请求路径没有或页面跳转路径不对"),
	//	@ApiResponse(code=1000001, message="内部请求密钥错误"),
	//	@ApiResponse(code=1000002, message="您还没有登录或登录已超时,需要重新登录"),
	//	@ApiResponse(code=1000003, message="检查登录状态失败,请稍后重试！"),
	//	@ApiResponse(code=1000004, message="请求的操作不存在,请检查访问地址正确性，如大小写"),
	//	@ApiResponse(code=1000005, message="响应后在系统内部发生不可预知的错误"),
	//	@ApiResponse(code=1019000, message="1019000~1999999为拦截器调用方法错误"),
	//	@ApiResponse(code=7001, message="码值代表的信息"),
	//	@ApiResponse(code=7002, message="码值代表的信息"),
	//	@ApiResponse(code=7003, message="码值代表的信息"),
	//	@ApiResponse(code=7004, message="码值代表的信息")
	//})
	//@RequestMapping(method={RequestMethod.POST}, value="/callMapping")
	//public MsgEmity 与mapping中的方法名一致(Integer i, String s, @RequestBody Object o...) {
	//	return currentPriceService.callMapping(i, s, o...);//controller中的参数有多少个,这里的参数就有多少个
	//}

}
